import { type } from "jquery"
import { Game } from "./Game"
import { SquareGrounp } from "./SquareGrounp"

/**
 * 坐标约束
 */
export interface Points {
  /**
   * 逻辑坐标X
   */
  readonly x: number,
  /**
   * 逻辑坐标y
   */
  readonly y: number
}


export interface IView {
  /**
   * 显示
   */
  show(): void

  /**
   * 移除，不再显示
   */
  remove(): void
}

/**
 * 形状
 * 有一个特殊坐标
 */
export type Shape = Points[]

/**
 * 移动方向
 */
export enum MoveDirection {
  left,
  right,
  down
}

/**
 * 游戏状态
 */
export enum GameStatus {
  /**
   * 未开始
   */
  init,
  /**
    * 游戏中
    */
  playing,
  /**
   * 暂停
   */
  pause,
  /**
  * 游戏结束
  */
  over
}

/**
 * 游戏显示类
 */
export interface GameViewer {
  /**
   * 显示下一个方块
   * @param teris 下一个方块对象
   */
  showNext(teris: SquareGrounp): void

  /**
   * 切换方块
   * @param teris 切换的方块对象
   */
  switch(teris: SquareGrounp): void

  /**
   * 游戏初始化
   * @param game 
   */
  init(game: Game): void

  /**
   * 显示分数
   * @param score 
   */
  showScore(score: number): void

  /**
   * 游戏暂停之后触发
   */
  
  onGamePause(): void

  /**
   * 游戏开始之后触发
   */
  onGameStart(): void
  
  /**
   * 游戏结束之后触发
   */
  onGameOver(): void
}